from enum import Enum


class CatBoostClassifierLossFunction(Enum):
    MULTI_CLASS = ('MultiClass', '用于多分类任务，计算类别的对数损失来进行优化。适用于类别数大于 2 的任务。')
    MULTI_CLASS_ONE_VS_ALL = ('MultiClassOneVsAll', '用一对多的方式进行多分类优化，每个类别与其他类别进行对比，适用于多分类任务。')
    LOGLOSS = ('Logloss', '用于二分类和多分类任务，计算每个样本的对数损失，适用于对数几率回归模型。')
    CROSS_ENTROPY = ('CrossEntropy', '类似于 Logloss，通常用于多分类任务，计算类别的交叉熵损失。')
    AUC = ('AUC', '基于 AUC（曲线下面积）的优化，适用于二分类任务，常用于处理不平衡数据集。')
    BINARIZED_LOGLOSS = ('BinarizedLogloss', '对数损失的变体，适用于二分类任务，处理一些特殊的优化问题。')

    def __init__(self, loss_name, description):
        self.loss_name = loss_name
        self.description = description

    def __str__(self):
        return f"{self.loss_name}: {self.description}"